package com.nbsaas.boot.article.data.entity;

import com.nbsaas.boot.code.annotation.FieldConvert;
import com.nbsaas.boot.code.annotation.FieldName;
import com.nbsaas.boot.code.annotation.bean.StoreStateBean;
import com.nbsaas.boot.jpa.data.entity.AbstractEntity;
import com.nbsaas.boot.jpa.data.entity.User;
import com.nbsaas.boot.rest.enums.StoreState;
import lombok.Data;

import javax.persistence.*;
import java.util.Set;

/**
 * 文章
 *
 * @author 年高
 */
@StoreStateBean
@Data
@Entity
@Table(name = "article")
public class Article extends AbstractEntity {

    /**
     * 文章分类
     */
    @FieldName
    @FieldConvert
    @ManyToOne(fetch = FetchType.LAZY)
    private ArticleCatalog catalog;
    /**
     * 文章评论数量
     */
    private Integer comments;
    /**
     * 喜欢的数量
     */
    private Integer likes;
    /**
     * 文章内容
     */
    @FieldConvert
    @ManyToOne(fetch = FetchType.LAZY)
    private ArticleDocument document;
    /**
     * 文章扩展信息
     */
    private String extData;
    /**
     * 文章图片集
     */
    private String images;
    /**
     * 封面
     */
    private String img;
    /**
     * 文章介绍
     */
    private String introduction;
    @JoinTable(name = "article_link_tag")
    @ManyToMany
    private Set<ArticleTag> tags;
    /**
     * 文章标题
     */
    private String title;
    /**
     * 点赞数量
     */
    private Integer ups;
    /**
     * 文章作者
     */
    @FieldConvert
    @ManyToOne(fetch = FetchType.LAZY)
    private User user;
    /**
     * 文章查看数量
     */
    private Integer views;
    private StoreState storeState;

    public static Article fromId(Long id) {
        Article result = new Article();
        result.setId(id);
        return result;
    }

}
